#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
用户认证字段迁移脚本
为User表添加邮箱认证、手机认证、实名认证相关字段
"""

import sqlite3
import os
from datetime import datetime

def migrate_database():
    """
    执行数据库迁移
    """
    db_path = "aihub.db"
    
    if not os.path.exists(db_path):
        print(f"数据库文件 {db_path} 不存在")
        return False
    
    try:
        # 连接数据库
        conn = sqlite3.connect(db_path)
        cursor = conn.cursor()
        
        print("开始执行数据库迁移...")
        
        # 检查是否已经存在新字段
        cursor.execute("PRAGMA table_info(users)")
        columns = [column[1] for column in cursor.fetchall()]
        
        # 需要添加的字段
        new_fields = [
            ('email_verified', 'BOOLEAN DEFAULT 0'),
            ('phone', 'VARCHAR(20)'),
            ('phone_verified', 'BOOLEAN DEFAULT 0'),
            ('real_name', 'VARCHAR(50)'),
            ('id_card', 'VARCHAR(18)'),
            ('real_name_verified', 'BOOLEAN DEFAULT 0')
        ]
        
        # 添加缺失的字段
        for field_name, field_type in new_fields:
            if field_name not in columns:
                sql = f"ALTER TABLE users ADD COLUMN {field_name} {field_type}"
                print(f"添加字段: {field_name}")
                cursor.execute(sql)
            else:
                print(f"字段 {field_name} 已存在，跳过")
        
        # 提交更改
        conn.commit()
        print("数据库迁移完成！")
        
        # 验证迁移结果
        cursor.execute("PRAGMA table_info(users)")
        updated_columns = cursor.fetchall()
        print("\n当前users表结构:")
        for column in updated_columns:
            print(f"  {column[1]} {column[2]} {'NOT NULL' if column[3] else 'NULL'} {'DEFAULT ' + str(column[4]) if column[4] else ''}")
        
        return True
        
    except sqlite3.Error as e:
        print(f"数据库迁移失败: {e}")
        return False
    
    finally:
        if conn:
            conn.close()

def rollback_migration():
    """
    回滚迁移（SQLite不支持DROP COLUMN，需要重建表）
    """
    print("警告: SQLite不支持删除列，如需回滚请手动处理")
    print("建议备份数据库后重新创建表结构")

if __name__ == "__main__":
    import sys
    
    if len(sys.argv) > 1 and sys.argv[1] == "rollback":
        rollback_migration()
    else:
        success = migrate_database()
        if success:
            print("\n迁移成功！现在可以使用新的认证功能了。")
        else:
            print("\n迁移失败！请检查错误信息。")